home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / More Source / Libraries / SpriteEngine / SE RectBounce / SpriteHanders.c < prev    next >
C/C++ Source or Header  |  1995-03-11  |  2KB  |  76 lines

  1. #include "SpriteTools.h"
  2.  
  3. // SpriteTools.h includes SpriteHandlers.h
  4.  
  5.  
  6. /*** Custom handlers - application dependent ***
  7.  
  8. Edit this as necessary. It should always include the following three routines:
  9.  
  10. MoveSprite: move the sprite
  11.  
  12. HitSprite: handle collisions between two sprites
  13.  
  14. InitSprites: Load all faces and create initial sprites
  15.  
  16. ***/
  17.  
  18.  
  19.  
  20. GrafPtr    firstFace, secondFace, thirdFace;
  21.  
  22.  
  23. void MoveSprite(SpritePtr theSprite)
  24. {
  25.     theSprite->position.h += theSprite->speed.h;
  26.     theSprite->position.v += theSprite->speed.v;
  27.     KeepOnScreen(theSprite);
  28.  
  29. } /*MoveSprite*/
  30.  
  31. void HitSprite(SpritePtr theSprite, SpritePtr anotherSprite)
  32. {
  33.     short    tempSpeed;
  34.     
  35.     if (RectSeparate(theSprite, anotherSprite) >= 2) // 2 or 3: horizontal, otherwise vertical
  36.     {
  37.         tempSpeed = theSprite->speed.h;
  38.         theSprite->speed.h = anotherSprite->speed.h;
  39.         anotherSprite->speed.h = tempSpeed;
  40.     }
  41.     else
  42.     {
  43.         tempSpeed = theSprite->speed.v;
  44.         theSprite->speed.v = anotherSprite->speed.v;
  45.         anotherSprite->speed.v = tempSpeed;
  46.     }
  47.     
  48. } /*HitSprite*/
  49.  
  50.  
  51. void InitSprites()
  52. {
  53.     SpritePtr    theSprite;
  54.  
  55. /*Load all pictures*/
  56.     firstFace = LoadFaceFromCicn(128);            /*cicn resource #128.*/
  57.     secondFace = LoadFaceFromCicn(129);            /*cicn resource #129.*/
  58.     thirdFace = LoadFaceFromCicn(130);            /*cicn resource #130.*/
  59.  
  60. /*Create sprites*/
  61.     theSprite = NewSprite();
  62.     theSprite->face = firstFace;
  63.     SetPt(&theSprite->position, 100, 100);
  64.     SetPt(&theSprite->speed, Rand(7)-3, Rand(7)-3);
  65.  
  66.     theSprite = NewSprite();
  67.     theSprite->face = secondFace;
  68.     SetPt(&theSprite->position, 50, 50);
  69.     SetPt(&theSprite->speed, Rand(7)-3, Rand(7)-3);
  70.  
  71.     theSprite = NewSprite();
  72.     theSprite->face = thirdFace;
  73.     SetPt(&theSprite->position, 150, 150);
  74.     SetPt(&theSprite->speed, Rand(7)-3, Rand(7)-3);
  75. } /*InitSprites*/
  76.